/**
 * @author: Gene
 * @age: 永远18岁的美少年
 * @Email： yangjianyun@58.com
 * @date: 2021-12-23 10:43:11
 * @description: ts 中的类
 */

/** 1. 抽象类 */
/**
 * 抽象类作为其它派生类的基类使用，它们一般不会直接被实例化，不同于接口，抽象类可以包含成员的实现细节。
 * abstract 关键字是用于定义抽象类和在抽象类内部定义抽象方法。
 */
abstract class Animal {
    abstract makeSound(): void

    move(): void {
        console.log("roaming...");
    }
}

// 通常我们需要创建子类  继承 抽象类, 将抽象类中的方法 一一实现. 这样再大型项目中可以很好的约束子类的实现
class Dog extends Animal {
    makeSound(): void {
    }

}

const dog = new Dog()
dog.move()